package com.base.demo.service.impl;

import java.text.SimpleDateFormat;
import java.util.Date;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.base.demo.entity.ClassGrade;
import com.base.demo.mapper.ClassGradeMapper;
import com.base.demo.service.ClassGradeService;

import lombok.extern.slf4j.Slf4j;

/**
 * <p>
 * 服务实现类
 * </p>
 *
 * @author xuyou
 * @since 2019-12-09
 */
@Service
@Slf4j
public class ClassGradeServiceImpl extends ServiceImpl<ClassGradeMapper, ClassGrade> implements ClassGradeService {

	@Autowired
	private volatile ClassGradeMapper classGradeMapper;

	/**
	 * 测试因调用存储过程导致存储过程后面的代码先执行 固增加volatile
	 */
	@Override
	public void callTest(int size) {
		/**
		 * 如果classGradeMapper不加volatile修饰 
		 * 会导致如果存储过程执行时间过长时,
		 * 结束调用存储过程 这行代码 会比 开始执行调用存储过程 先执行
		 * 加了 volatile 会禁止指令重排序 可避免上述问题
		 */
		log.info("开始执行调用存储过程");
		classGradeMapper.callTest(size);
		log.info("结束调用存储过程");
//		try {
//			Thread.sleep(5000);
//		} catch (InterruptedException e) {
//			e.printStackTrace();
//		}
		log.info("开始异步调用线程.");
		// new Thread(new Test()).start();
	}

}

class Test implements Runnable {

	@Override
	public void run() {
		System.out.println("当前时间.............." + new SimpleDateFormat("hhMMss.SSS").format(new Date()));
	}

}
